package com.kitty.spring.annotationdriven.configuration;

import com.kitty.spring.annotationdriven.aop.MyAspect;
import com.kitty.spring.annotationdriven.aop.MyCalculator;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.EnableAspectJAutoProxy;

/**
 * Aop:在程序运行期间动态的将某段代码切入到指定方法指定位置；
 *
 * aop使用：
 *  1.导入aop模块：（spring-aspects）
 *  2.定义一个业务逻辑类（MyCalculator）
 *  3.定义一个切面类（MyAspect）
 *      通知方法：
 *          前置通知：（@Before）
 *          后置通知：（@After）
 *          返回通知：（@AfterReturning）
 *          异常通知：（@AfterThrowing）
 *          环绕通知：（@Around）
 *
 *
 *
 *
 *
 * @Author SHEN
 * @Date 2020/12/8
 */
@Configuration
@EnableAspectJAutoProxy
public class BeanConfigAop {

    @Bean
    public MyCalculator myCalculator(){
        return new MyCalculator();
    }

    @Bean
    public MyAspect myAspect(){
        return new MyAspect();
    }

}
